package com.nanyang.tms.api.service.shipment;

import com.nanyang.common.core.domain.ApiResult;
import com.nanyang.common.core.page.PageBean;
import com.nanyang.tms.api.dto.request.shipment.ShipmentBillAddRequest;
import com.nanyang.tms.api.dto.request.shipment.ShipmentBillFuzzyQueryRequest;
import com.nanyang.tms.api.dto.request.shipment.ShipmentBillQueryRequest;
import com.nanyang.tms.api.dto.request.shipment.ShipmentBillUpdateStateRequest;
import com.nanyang.tms.api.dto.response.shipment.ShipmentBillDetailResponse;
import com.nanyang.tms.api.dto.response.shipment.ShipmentBillFuzzyPageResponse;
import com.nanyang.tms.api.dto.response.shipment.ShipmentBillPageResponse;

import java.util.List;

public interface ShipmentBillRpcService {
    /**
     * 列表
     * @param param
     * @return
     */
    ApiResult<PageBean<ShipmentBillPageResponse>> listShipmentBill(ShipmentBillQueryRequest param);

    /**
     * 模糊列表
     * @param param
     * @return
     */
    ApiResult<PageBean<ShipmentBillFuzzyPageResponse>> listFuzzyShipmentBill(ShipmentBillFuzzyQueryRequest param);
    /**
     *
     * <p>getShipmentBillById</p>
     * <p>Description:(根据code获取详情)</p>
     *
     * @param code
     * @return
     */
    ApiResult<List<ShipmentBillDetailResponse>> selectByCode(String code);
    /**
     *
     * <p>saveShipmentBill</p>
     * <p>Description:(保存服务产品)</p>
     *
     * @param param
     * @return
     */
    ApiResult<Boolean> saveShipmentBill(ShipmentBillAddRequest param);
    /**
     *
     * <p>updateShipmentBill</p>
     * <p>Description:(设置完成)</p>
     *
     * @param param
     * @return
     */
    ApiResult<Boolean> updateState(ShipmentBillUpdateStateRequest param);
    /**
     *
     * <p>updateShipmentBill</p>
     * <p>Description:(作废)</p>
     *
     * @param param
     * @return
     */
    ApiResult<Boolean> cancelState(ShipmentBillUpdateStateRequest param);

}
